﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//函数指针变量
//int add(int x,int y)
//{
//	return x + y;
//}
//int main() {
//	int a = 0, b = 0;
//	scanf("%d %d", &a, &b);
//	int(*pa)(int, int) = add;
//	/*int(*pa)(int, int) = &add;*/
//	int ret=pa(a,b);
//	int ret1=(*pa)(a, b);
//	printf("ret=%d,ret1=%d\n",ret,ret1 );
//	/*printf("%p\n", add);
//	printf("%p", &add);*/
//	return 0;
//}

//void (*signal(int, void(*)(int)))(int);
//typedef void(*pd)(int);
//pd(signal(int, pd));
//回调函数⬇
//加法
//int sum(int x,int y)
//{
//	return x + y;
//}
////减法
//int minius(int x, int y)
//{
//	return x - y;
//}
////乘法
//int multiply(int x, int y)
//{
//	return x * y;
//}
////除法
//int division(int x, int y)
//{
//	return x / y;
//}
//void meau() {
//	printf("*****************************************\n");
//	printf("*****************************************\n");
//	printf("******   1.sum    2.minius***************\n");
//	printf("******   3.multiply  4.division**********\n");
//	printf("******   0.exit                **********\n");
//	printf("*****************************************\n");
//	printf("*****************************************\n");
//
//}
//void call(int(*fun)(int,int) )
//{
//	int a = 0, b = 0;
//	printf("请输入:\n");
//	scanf("%d %d", &a, &b);
//	int ret = fun(a, b);
//	printf("%d", ret);
//}
//int main() {
//	int input = 0;
//	do
//	{
//		meau();
//		scanf("%d", &input);
//		switch (input)
//		{
//		case 1:call(sum);
//			break;
//		case 2:
//			call(minius);
//			break;
//		case 3:
//			call(multiply);
//			break;
//		case 4:
//			call(division);
//			break;
//		case 0:
//			printf("退出程序");
//			break;
//		default:
//			printf("选择错误\n");
//			break;
//		}
//	} while (input);
//	return 0;
//}

//int main() {
//
//	return 0;
//}
//int int_cmp(const void* p1, const void* p2)
//{
//	return *(int*)p1 - *(int*)p2;
//}
//void Print(int*arr,int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d   ", *(arr + i));
//	}
//	printf("\n");
//}
//int main() {
//	int arr[] = { 15,6,9,4,7,8,5,2,2536,3,6548 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	Print(arr, sz);
//	qsort(arr,sz,sizeof(int),int_cmp);
//	Print(arr,sz);
//	return 0;
//}

struct Stu
{
	char name[20];
	int age;
	int sno;
};
int cmp_age(const void* p1, const void* p2)
{
	return ((struct Stu*)p1)->age - ((struct Stu*)p2)->age;
}
int cmp_name(const void* p1, const void* p2)
{
	return strcmp(((struct Stu*)p1)->name, ((struct Stu*)p2)->name);
}
int main()
{
	struct Stu s[] = { {"zhangsan",18},{"lisi",20},{"wangwu",25}};
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), cmp_name);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%s %d\n", s[i].name, s[i].age);
	}
	return 0;
}
//今天练习代码的第二天，
// 完美结束，再接再厉。